package com.adcc.ags.gms.user.mapper;

import com.adcc.ags.gms.mq.entity.Queue;
import com.adcc.ags.gms.user.entity.GWUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 网关用户数据仓库
 */
public interface GWUserMapper {

    /**
     * 是否存在相同网关用户名
     * @param name
     * @return
     */
    public int isExistGWUserName(String name);

    /**
     * 是否存在相同网关用户ID
     * @param userId
     * @return
     */
    public int isExistGWUserId(String userId);

    /**
     * 根据发送队列ID取得发送队列使用数
     * @param id
     * @return
     */
    public int getSendQueueCount(long id);

    /**
     * 查找所有网关用户
     * @return
     */
    public List<GWUser> findAllGWUser();

    /**
     * 查找在线网关用户
     * @return
     */
    public List<GWUser> findOnlineGWUser();

    /**
     * 查找所有网关用户已使用队列
     * @return
     */
    public List<Queue> findUsedQueue();

    /**
     * 查找所有网关用户已使用接收队列
     * @return
     */
    public List<Queue> findUsedRecvQueue();

    /**
     * 根据用户ID查询网关用户
     * @param id
     * @return
     */
    public GWUser findGWUserById(long id);

    /**
     * 根据用户ID查询已上线用户
     * @param id
     * @return
     */
    public GWUser findOnlineGWUserById(long id);

    /**
     * 根据用户ID列表查询网关用户
     * @param id
     * @return
     */
    public List<GWUser> findGWUserByIdList(String[] id);

    /**
     * 根据用户名查找网关用户
     * @param userName
     * @return
     */
    public List<GWUser> findGWUserByName(@Param("userName")String userName);

    /**
     * 根据队列ID查询网关用户
     * @param queueId
     * @return
     */
    public List<GWUser> findByQueueId(long queueId);

    /**
     * 新增网关用户
     * @param gwUser
     */
    public void createGWUser(GWUser gwUser);

    /**
     * 更新网关用户
     * @param userConfig
     */
    public void updateGWUser(GWUser userConfig);

    /**
     * 删除网关用户
     * @param id
     */
    public void deleteGWUserById(long id);
}
